剑指 Offer 17. 打印从1到最大的n位数

题目描述

输入数字 $n$,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。

示例 1:

1
2
输入: n = 1
输出: [1,2,3,4,5,6,7,8,9]

说明:

  • 用返回一个整数列表来代替打印
  • n 为正整数

算法

(模拟) $O(10^n)$

模拟输出从 $1 \sim 10^n - 1$,求 $10^n$ 可以用库函数 pow(x, y)

进阶:可以考虑大数如何处理。

时间复杂度

$O(10^n)$

空间复杂度

$O(10^n)$

C++ 代码

1
2
3
4
5
6
7
8
class Solution {
public:
vector<int> printNumbers(int n) {
vector<int> res;
for (int i = 1; i < pow(10, n); i ++ ) res.push_back(i);
return res;
}
};
Author: tonngw
Link: https://tonngw.com/2022/07/09/剑指 Offer/剑指 Offer 17. 打印从1到最大的n位数/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.